1 module directx.d3d10_1;
2 /*-------------------------------------------------------------------------------------
3  *
4  * Copyright (c) Microsoft Corporation
5  *
6  *-------------------------------------------------------------------------------------*/
7 
8 version(Windows):
9 version(Direct3D_10):
10 
11 public import directx.d3d10;
12 public import directx.d3d10misc;
13 public import directx.d3d10_1shader;
14 
15 enum D3D10_1_DEFAULT_SAMPLE_MASK    = ( 0xffffffff );
16 enum D3D10_1_FLOAT16_FUSED_TOLERANCE_IN_ULP = ( 0.6 );
17 enum D3D10_1_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP    = ( 0.6f );
18 enum D3D10_1_GS_INPUT_REGISTER_COUNT= ( 32 );
19 enum D3D10_1_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT    = ( 32 );
20 enum D3D10_1_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS  = ( 128 );
21 enum D3D10_1_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT= ( 32 );
22 enum D3D10_1_PS_OUTPUT_MASK_REGISTER_COMPONENTS     = ( 1 );
23 enum D3D10_1_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
24 enum D3D10_1_PS_OUTPUT_MASK_REGISTER_COUNT  = ( 1 );
25 enum D3D10_1_SHADER_MAJOR_VERSION   = ( 4 );
26 enum D3D10_1_SHADER_MINOR_VERSION   = ( 1 );
27 enum D3D10_1_SO_BUFFER_MAX_STRIDE_IN_BYTES  = ( 2048 );
28 enum D3D10_1_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES    = ( 256 );
29 enum D3D10_1_SO_BUFFER_SLOT_COUNT   = ( 4 );
30 enum D3D10_1_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER = ( 1 );
31 enum D3D10_1_SO_SINGLE_BUFFER_COMPONENT_LIMIT       = ( 64 );
32 enum D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT  = ( 32 );
33 enum D3D10_1_SUBPIXEL_FRACTIONAL_BIT_COUNT  = ( 8 );
34 enum D3D10_1_VS_INPUT_REGISTER_COUNT= ( 32 );
35 enum D3D10_1_VS_OUTPUT_REGISTER_COUNT       = ( 32 );
36 
37 alias DWORD D3D10_FEATURE_LEVEL1;
38 enum : D3D10_FEATURE_LEVEL1
39 {
40     D3D10_FEATURE_LEVEL_10_0    = 0xa000,
41     D3D10_FEATURE_LEVEL_10_1    = 0xa100,
42     D3D10_FEATURE_LEVEL_9_1     = 0x9100,
43     D3D10_FEATURE_LEVEL_9_2     = 0x9200,
44     D3D10_FEATURE_LEVEL_9_3     = 0x9300
45 }
46 
47 struct D3D10_RENDER_TARGET_BLEND_DESC1
48 {
49     BOOL BlendEnable;
50     D3D10_BLEND SrcBlend;
51     D3D10_BLEND DestBlend;
52     D3D10_BLEND_OP BlendOp;
53     D3D10_BLEND SrcBlendAlpha;
54     D3D10_BLEND DestBlendAlpha;
55     D3D10_BLEND_OP BlendOpAlpha;
56     UINT8 RenderTargetWriteMask;
57 }
58 
59 struct D3D10_BLEND_DESC1
60 {
61     BOOL AlphaToCoverageEnable;
62     BOOL IndependentBlendEnable;
63     D3D10_RENDER_TARGET_BLEND_DESC1[8] RenderTarget;
64 }
65 
66 mixin(uuid!(ID3D10BlendState1, "EDAD8D99-8A35-4d6d-8566-2EA276CDE161"));
67 extern (C++) interface ID3D10BlendState1 : ID3D10BlendState {
68     void GetDesc1(D3D10_BLEND_DESC1* pDesc);
69 
70 }
71 
72 struct D3D10_TEXCUBE_ARRAY_SRV1
73 {
74     UINT MostDetailedMip;
75     UINT MipLevels;
76     UINT First2DArrayFace;
77     UINT NumCubes;
78 }
79 
80 alias D3D_SRV_DIMENSION D3D10_SRV_DIMENSION1;
81 
82 struct D3D10_SHADER_RESOURCE_VIEW_DESC1
83 {
84     DXGI_FORMAT Format;
85     D3D10_SRV_DIMENSION1 ViewDimension;
86     union
87     {
88         D3D10_BUFFER_SRV Buffer;
89         D3D10_TEX1D_SRV Texture1D;
90         D3D10_TEX1D_ARRAY_SRV Texture1DArray;
91         D3D10_TEX2D_SRV Texture2D;
92         D3D10_TEX2D_ARRAY_SRV Texture2DArray;
93         D3D10_TEX2DMS_SRV Texture2DMS;
94         D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
95         D3D10_TEX3D_SRV Texture3D;
96         D3D10_TEXCUBE_SRV TextureCube;
97         D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray;
98     }
99 }
100 
101 mixin(uuid!(ID3D10ShaderResourceView1, "9B7E4C87-342C-4106-A19F-4F2704F689F0"));
102 extern (C++) interface ID3D10ShaderResourceView1 : ID3D10ShaderResourceView {
103     void GetDesc1(D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc);
104 }
105 
106 enum D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS
107 {
108     D3D10_STANDARD_MULTISAMPLE_PATTERN  = 0xffffffff,
109     D3D10_CENTER_MULTISAMPLE_PATTERN    = 0xfffffffe
110 }
111 
112 mixin(uuid!(ID3D10Device1, "9B7E4C8F-342C-4106-A19F-4F2704F689F0"));
113 extern (C++) interface ID3D10Device1 : ID3D10Device {
114     HRESULT CreateShaderResourceView1(
115         ID3D10Resource pResource,
116         const(D3D10_SHADER_RESOURCE_VIEW_DESC1)* pDesc,
117         ID3D10ShaderResourceView1* ppSRView);
118 
119     HRESULT CreateBlendState1(
120         const(D3D10_BLEND_DESC1)* pBlendStateDesc,
121         ID3D10BlendState1* ppBlendState);
122 
123     D3D10_FEATURE_LEVEL1 GetFeatureLevel();
124 }
125 
126 enum D3D10_1_SDK_VERSION = 0x20;
127 
128 ///////////////////////////////////////////////////////////////////////////
129 // D3D10CreateDevice1
130 // ------------------
131 //
132 // pAdapter
133 //      If NULL, D3D10CreateDevice1 will choose the primary adapter and
134 //      create a new instance from a temporarily created IDXGIFactory.
135 //      If non-NULL, D3D10CreateDevice1 will register the appropriate
136 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
137 //      creating the device.
138 // DriverType
139 //      Specifies the driver type to be created: hardware, reference or
140 //      null.
141 // Software
142 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
143 //      non-Software driver types.
144 // Flags
145 //      Any of those documented for D3D10CreateDeviceAndSwapChain1.
146 // HardwareLevel
147 //      Any of those documented for D3D10CreateDeviceAndSwapChain1.
148 // SDKVersion
149 //      SDK version. Use the D3D10_1_SDK_VERSION macro.
150 // ppDevice
151 //      Pointer to returned interface.
152 //
153 // Return Values
154 //  Any of those documented for
155 //          CreateDXGIFactory
156 //          IDXGIFactory::EnumAdapters
157 //          IDXGIAdapter::RegisterDriver
158 //          D3D10CreateDevice1
159 //
160 ///////////////////////////////////////////////////////////////////////////
161 
162 __gshared PFN_D3D10_CREATE_DEVICE1 D3D10CreateDevice1;
163 
164 extern (Windows) {
165     alias PFN_D3D10_CREATE_DEVICE1 = HRESULT function(
166         IDXGIAdapter         pAdapter,
167         D3D10_DRIVER_TYPE    DriverType,
168         HMODULE              Software,
169         UINT                 Flags,
170         D3D10_FEATURE_LEVEL1 HardwareLevel,
171         UINT                 SDKVersion,
172         ID3D10Device1        *ppDevice);
173 }
174 
175 ///////////////////////////////////////////////////////////////////////////
176 // D3D10CreateDeviceAndSwapChain1
177 // ------------------------------
178 //
179 // ppAdapter
180 //      If NULL, D3D10CreateDevice1 will choose the primary adapter and
181 //      create a new instance from a temporarily created IDXGIFactory.
182 //      If non-NULL, D3D10CreateDevice1 will register the appropriate
183 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
184 //      creating the device.
185 // DriverType
186 //      Specifies the driver type to be created: hardware, reference or
187 //      null.
188 // Software
189 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
190 //      non-Software driver types.
191 // Flags
192 //      Any of those documented for D3D10CreateDevice1.
193 // HardwareLevel
194 //      Any of:
195 //          D3D10_CREATE_LEVEL_10_0
196 //          D3D10_CREATE_LEVEL_10_1
197 // SDKVersion
198 //      SDK version. Use the D3D10_1_SDK_VERSION macro.
199 // pSwapChainDesc
200 //      Swap chain description, may be NULL.
201 // ppSwapChain
202 //      Pointer to returned interface. May be NULL.
203 // ppDevice
204 //      Pointer to returned interface.
205 //
206 // Return Values
207 //  Any of those documented for
208 //          CreateDXGIFactory
209 //          IDXGIFactory::EnumAdapters
210 //          IDXGIAdapter::RegisterDriver
211 //          D3D10CreateDevice1
212 //          IDXGIFactory::CreateSwapChain
213 //
214 ///////////////////////////////////////////////////////////////////////////
215 
216 __gshared PFN_D3D10_CREATE_DEVICE_AND_SWAP_CHAIN1 D3D10CreateDeviceAndSwapChain1;
217 
218 extern (Windows) {
219     alias PFN_D3D10_CREATE_DEVICE_AND_SWAP_CHAIN1 = HRESULT function(
220             IDXGIAdapter pAdapter,
221             D3D10_DRIVER_TYPE DriverType,
222             HMODULE Software,
223             UINT Flags,
224             D3D10_FEATURE_LEVEL1 HardwareLevel,
225             UINT SDKVersion,
226             DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,
227             IDXGISwapChain* ppSwapChain,
228             ID3D10Device1* ppDevice);
229 }